"""
MCP工具调用演示脚本
展示如何调用从MCP服务器获取的工具
"""
import asyncio
from app.tools.mcp import get_all_mcp_tools, get_mcp_tools


async def demo_greet_tool(tools):
    """演示greet工具的使用"""
    print("=== 演示 greet 工具 ===")

    
    # 找到greet工具
    greet_tool = None
    for tool in tools:
        if tool.name == "greet":
            greet_tool = tool
            break
    
    if greet_tool:
        try:
            # 调用greet工具 - 使用ainvoke方法
            result = await greet_tool.ainvoke({"name": "张三"})
            print(f"greet工具调用结果: {result}")
        except Exception as e:
            print(f"调用greet工具时出错: {e}")
    else:
        print("未找到greet工具")


async def demo_transcribe_tools(tools):
    """演示音频转录工具的使用"""
    print("\n=== 演示音频转录工具 ===")
    
    # 找到转录相关工具
    submit_tool = None
    check_tool = None
    
    for tool in tools:
        if tool.name == "submit_transcribe_task":
            submit_tool = tool
        elif tool.name == "check_transcribe_task":
            check_tool = tool
    
    if submit_tool:
        try:
            # 提交转录任务（使用示例音频URL）
            print("1. 提交音频转录任务...")
            audio_url = "https://example.com/audio.mp3"  # 示例URL
            submit_result = await submit_tool.ainvoke({"url": audio_url})
            print(f"提交任务结果: {submit_result}")
            
            # 从结果中提取task_id（这里只是演示，实际需要根据返回格式解析）
            # task_id = "example_task_id"  # 实际应该从submit_result中解析
            
        except Exception as e:
            print(f"提交转录任务时出错: {e}")
    
    if check_tool:
        try:
            # 检查任务状态（使用示例task_id）
            print("2. 检查转录任务状态...")
            task_id = "example_task_id"  # 示例task_id
            check_result = await check_tool.ainvoke({"task_id": task_id})
            print(f"任务状态查询结果: {check_result}")
            
        except Exception as e:
            print(f"查询任务状态时出错: {e}")

async def main():
    """主函数"""
    print("正在获取MCP工具...")
    
    try:
        # 获取MCP工具
        tools = await get_all_mcp_tools()
        
        if not tools:
            print("未获取到任何工具")
            return
        
        print(f"成功获取到 {len(tools)} 个工具\n")
        
        # 2. 演示greet工具
        await demo_greet_tool(tools)
        
        # 3. 演示转录工具
       #  await demo_transcribe_tools(tools)
        
    except Exception as e:
        print(f"获取或调用MCP工具时出错: {e}")
        import traceback
        traceback.print_exc()


if __name__ == "__main__":
    # 运行演示
    asyncio.run(main())